home *** CD-ROM | disk | FTP | other *** search
- AMIGA (tm) TECHNICAL NOTE 29-Mar-86
-
- Upgrading an AMIGA A1000 with a Motorola MC68010L8
-
- by Thad Floryan
-
-
- For quite awhile now, I've been experimenting using an MC68010L8 in place of
- the MC68000 in my Amiga. The benefits of the MC68010 are great, but several
- "problems" with the MC68010 upgrade have held me back from recommending this
- simple enhancement to everyone. Now, the final quirk has been solved, and I
- am recommending the upgrade to everyone!
-
- This document has several parts, ALL of which must be read and understood by
- anyone wishing to perform the upgrade or contract for someone to perform the
- upgrade for you. Additionally, there are several files which accompany this
- technical note:
-
- CHOP.BAS
- CHOP.C
- DeciGEL
- DeciGEL.asm
- DeciGEL.make
-
- The several parts of this document are:
-
- I. The MC68010 hardware upgrade
-
- II. The MC68010 software upgrade
-
- III. Copy of Motorola's MC68000 Micro Minutes MM-444-02, entitled
- "Advantages of Upgrading an MC68000 to an MC68010".
-
- IV. Side notes
-
- V. Trademark notices
-
- --------------------------------------------------------------------------
-
- ** DISCLAIMER **
-
- The modification and details described in this technical note are provided
- "as is", without warranty of any kind, either expressed or implied, inclu-
- ding, but not limited to, the implied warranties of fitness for a particu-
- lar purpose. The entire risk as to the results and performance of the mo-
- dification is assumed by you. In no event will I, Thaddeus P. Floryan Jr,
- be liable for direct, indirect, incidental or consequential damages resul-
- ting from the use or application of this information.
-
- --------------------------------------------------------------------------
-
- I. The MC68010 hardware upgrade
-
- The MC68010 is pin-for-pin compatible with the MC68000 installed in all
- Amiga Model A1000 PCs. The hardware upgrade consists of replacing the
- MC68000 with the MC68010.
-
-
- ** CAUTION **
-
- The internals of the Amiga are sensitive to static
- and are fragile; working on a computer is not like
- working on your car. Also, opening the Amiga will
- void your warranty. It may be worth your peace of
- mind to contract an experienced technician for the
- hardware part of this upgrade. Common sense and a
- good mechanical aptitude are essential. Take your
- time and do not rush; restrain your excitement for
- later, after the MC68010 is installed.
-
- To open the Amiga, the five screws on the underside of the case must be
- removed. Releasing the cover can be tricky; examine the left side of the
- case near the power switch (front side corner) and also 10 inches further
- back along the seam and note the tabs: push in until they separate, then
- lift the cover up toward the right side of the case and release the tabs
- there. The metal RFI shield covers the entire PC board and must be removed
- to gain access to the MC68000. Remove all the screws along its edge, and
- also straighten out the tabs which protrude upwards through the shield, then
- lift and remove the shield; be sure to note where each screw is supposed to
- be located as there are several types of screws. The disk drive must also
- be removed since it sits over one edge of the MC68000. First unplug the
- two cables (power and signal) after noting the orientation so that they can
- be replaced correctly later. Now remove all screws fastening the disk
- drive and lift it up and out: NOTE that the wires to the LED are still
- fastened; these do not need to be removed if you turn the drive upside down
- and lay it on a thick book alongside the right side of the Amiga case. Pry
- the MC68000 out and replace it with a MC68010L8. Reverse all the previous
- steps to reassemble the Amiga; the tabs which protrude through the RFI
- shield need not be twisted back into place.
-
- Reconnect all the cables to the Amiga. Powerup the Amiga and boot with your
- usual Kickstart and Workbench disks. Verify that the system appears to be
- working as normal. Now, either from the Workbench or CLI, startup the
- CALCULATOR tool, and perform the operation: " 9 * 3 = ". There should be
- a software failure; this indicates the MC68010 is running correctly because
- the CALCULATOR supplied with V1.1 uses a "MOVE SR,ea" instruction which is
- invalid in user-mode with a MC68010. Reboot the Workbench and proceed now
- to section II, software upgrade.
-
- If you do not experience the symptoms as described above, there may be
- several reasons:
-
- 1. you re-installed the MC68000 instead of the MC68010,
-
- 2. the MC68010 is "dead", or
-
- 3. something else inside the Amiga has been damaged.
-
- At this point, you are on your own. My advice is to re-install the MC68000
- and verify that your system works again; if it does, then your MC68010 chip
- may be bad. If your system still does not operate with the MC68000 back in,
- then you gotta heap of trouble. Re-read the DISCLAIMER above, and seek
- competent technical service.
-
- ---------------------------------------------------------------------------
-
- II. The MC68010 software upgrade
-
-
- Beginning with V1.1 of Kickstart and Workbench, Commodore-Amiga "officially"
- supports operation of the MC68000, MC68010 and MC68020 CPU chips in the
- Amiga Model A1000 per:
-
- "With the exception of the Calculator, software in the 1.1 release
- is compatible with the 68010 and 68020 processors. Application
- programmers wishing to take advantage of such products should be
- sure to use the Exec GetCC() function to get the processor condi-
- tion codes. (GetCC() handles the differences between the proces-
- sors such as the fact that "MOVE SR," is an invalid user mode
- operation in the 68010 and 68020.) In addition, programmers
- should be sure to NOT use the upper 8 bits of a pointer for
- storing unrelated information, since the 68020 uses all 32 bits
- for addressing.
-
- = For those doing systems work, Exec maintains flags in the
- AttnFlags field of ExecBase which describe the type of processor
- in your machine. Exec's coldstart procedure will update certain
- library entry vectors as neccessry to maintain compatibility.
- If you write code that uses the Supervisor() function, keep in
- mind that your stack frame is processor dependent. Use the
- SuperState() function for processor independent supervisor mode
- entry.
-
- = V1.1 ROMWack will correctly display information for 68010/68020
- address and bus errors.
- "
-
- OK, as you can see, simply by having installed the MC68010, you will be able
- to use most Amiga system software without any problems. But, the CALCULATOR
- and other programs loaded with libraries using "MOVE SR,ea" will cause your
- system to go to lunch with the Guru. This is the reason I haven't
- encouraged people to upgrade their Amigas until now; only a knowledgeable
- person would have been able to either live with the occasional problem, or
- rebuild the software to not use the "MOVE SR,ea" instructions.
-
- So what happened all of a sudden to change my mind? Simply that one clever
- person has developed a short and elegant software solution that prevents
- the "MOVE SR,ea" instructions from crashing your system. "How," you may
- ask, "is this done?". It's done by inserting a "wedge" that intercepts
- instruction privilege violations, examining the offending instruction for
- the presence of "MOVE SR,ea" and, if found, replacing that instruction in
- memory with a "MOVE CCR,ea" and resuming at the point of failure. Since the
- only valid use of the system status register (SR) in a user-mode program
- would be to get the condition codes, the assumption made by the "wedge" is
- a reasonable one. And, it works! I've been testing ALL the cases that
- failed previously with the MC68010 in the Amiga and they ALL perform
- correctly now.
-
- I have included 5 programs with this technical note:
-
- CHOP.BAS public domain, author: Anonymous
- CHOP.C public domain, author: J S Plegge
- DeciGEL public domain, author: Scott Turner
- DeciGEL.asm public domain, author: Scott Turner
- DeciGEL.make public domain, author: Scott Turner
-
- DeciGEL is the "wedge" program that needs to be placed in the "c" directory
- of your workbench disk; DeciGEL.asm is the Assembler source file, and the
- DeciGEL.make is an EXECUTE file that will recreate DeciGEL from DeciGEL.asm.
- If you don't have the Amiga Assembler, you can simply download DeciGEL and
- use it immediately. It is best to include a line in "s/startup-sequence" on
- your Workbench disk that will call DeciGEL. For example:
-
- echo "Workbench disk. Release 1.1"
- echo " "
- echo "Use Preferences tool to set date"
- echo " "
- DeciGEL
- .
- .
-
- The CHOP.BAS and CHOP.C programs are used if you download DeciGEL and use
- the progam directly, without rebuilding. The CHOP programs must be used
- to make SURE the DeciGEL program is exactly 168 bytes long. You can
- determine the size of DeciGEL on your system by using the CLI's LIST
- program. If the size is greater than 168 bytes, CHOP will allow you to
- truncate (or chop) the file to 168 bytes. CHOP.BAS operates with ABasiC
- (not AmigaBASIC), and CHOP.C is the source of a "C" program; use either one
- as appropriate for your needs.
-
- With the MC68010 installed and DeciGEL "wedged", your Amiga should operate
- anywheres from 4% to 50% faster depending on what you're doing. Note that
- the "Boing!" demo will not be faster since its timing is synchronized to
- the vertical framing of the monitor's clocking which is FIXED per NTSC TV
- standards! The biggest benefits of the MC68010 upgrade will occur with
- heavy number-crunching applications, such as spread sheets and Mandelbrot
- picture generations. Enjoy!
-
- --------------------------------------------------------------------------
-
- III. M68000 MICRO MINUTES (c) Motorola MM-444-02
-
- Advantages of Upgrading an MC68000 to an MC68010
-
-
- There are several ways a system's performance can be upgraded. Some are
- software related, such as lowering operating system overhead, obtaining
- better quality language compilers, wisely designing application programs,
- and coding applications more efficiently. Others are hardware related,
- such as adding memory, improving I/O channel data rates, increasing mass
- storage speed and capacity, reducing memory access times, and upgrading
- the system processor's clock frequency.
-
- When considering an MC68000 system upgrade to higher performance, the
- obvious thought is to redesign for a higher frequency MC68000. For example,
- a current MC68000 system running at 10 MHz could be redesigned to run at
- 12.5 MHz, thereby increasing system throughput by 25%. The "obvious solu-
- tion", however, is not necessarily the most appropriate or cost-effective
- once several factors are taken into consideration and alternative solutions
- examined.
-
- The speed-up of a system clock will not be effective unless the system's
- memory access time is also improved. The performance of the MC68000 is
- strictly limited by the bus speed, and if no improvement in memory speeds
- are available, then an increase in system clock speed will lead to
- negligible improvement in the overall result. A 10 MHz processor running
- with no "wait states" utilizes a 400 nS bus cycle (4 clocks x 100 nS/clock).
- This same bus cycle timing, however, leads to a wait cycle on a 12.5 MHz
- processor (4 clocks x 80 nS/clock + 80 nS of idle time). Thus, the bus
- performance is exactly the same, but the faster processor is idled for one
- complete clock cycle. Since a decrease in the bus cycle time provides a
- directly proportional increase in processor throughput (until, of course,
- the memory cycle becomes faster than the fastest processor bus cycle), the
- 12.5 MHz processor has no relative performance advantage over the 10 MHz
- system. The bottom line, then, is that in order to be effective, a higher
- speed processor must run with fewer or the same number of "wait states".
- This normally requires a redesign of the memory subsystem to improve the
- memory access time.
-
- Referring to the MC68000 Data Manual (ADI-814-R4), the memory access re-
- quirements for the various speed processors can be examined. The effective
- memory access time (Taccs) of the MC68000 to a memory array (from assertion
- of Address Strobe [-AS] to data valid) is:
-
- Taccs = Tch + 2Tcyc - Tchs1 - Tdic1 + (n * Tcyc)
-
- where:
- Tch is the clock high time (system dependent)
- Tcyc is the clock period of the processor clock
- Tchs1 is the delay time from the rising edge of the clock to the
- assertion of address strobe
- Tdic1 is the data input set-up time prior to the falling edge of
- the clock
- n is the number of wait cycles in the system
-
- Assuming a symmetric clock (50% duty cycle), the memory speed required for
- a no "wait-state" bus cycle for a 19 Mhz MC68000 processor is 185 nS (50 +
- 200 - 55 -10 + 0). This bus speed can be easily realized with readily
- available 150 nS dynamic RAMs and careful system design. However, with the
- same assumptions, the memory speed required for a no "wait-state" bus cycle
- on a 12.5 Mhz processor is reduced to 135 nS (40 + 160 - 55 - 10 + 0) which
- presents an obvious problem to the cost-conscious system designer -- lack of
- cost-effective, large capacity 100 nS RAMs!
-
- Memory access times are not the only difficulty encountered with the faster
- clock speeds. In a similar vein, the design of an efficient 12.5 MHz system
- is more difficult than that of a 10 MHz system, since more careful attention
- must be paid to the physical design of the board in order to account for the
- higher frequency signals present, and the increased sensitivity to transient
- phenomena.
-
- A "painless" alternative means to EFFECTIVELY increase system performance
- is to upgrade to the MC68010 processor. The MC68010 at equal clock fre-
- quencies will run from 8% to 50% faster than an MC68000 without any user
- code changes. The speed-ups are due to several microcode enhancements:
- many 32-bit operations, conditional branches, multiply, divide and other
- miscellaneous instructions run faster. Systems which use memory management
- can have dramatic improvements with slight operating system changes
- utilizing a few new MC68010 instructions such as "Move to/from Address
- Space" (MOVES).
-
- Systems may see a significant improvement if they heavily utilize multiply,
- divide and looping operations. Loops run from 23% to 80% faster once the
- microcode sets up the automatic "loop mode". Such loops benefit particular
- functions such as block moves, character matching and general string
- manipulation operations, and multiple-precision binary and packed BCD
- arithmetic. The new MC68010 multiply is 14 clocks faster, and the divide
- is 32 clocks faster than the MC68000. Programs utilizing (or with the
- potential of utilizing) such operations can obtain an increase in perfor-
- mance easily exceeding 10%.
-
- An additional "plus" of the MC68010 is the provision of a clear path for
- the upgrade of current operating systems to full virtual operating systems
- utilizing the sophisticated virtual memory processing capabilities of the
- MC68010 (which is the same virtual environment offered by the 32-bit
- MC68020).
-
- Since the MC68010 is pin-for-pin compatible with the MC68000, *NO* hardware
- redesign is necessary. Only very minor software changes may have to be
- made depending on operating system conventions. The MC68010 differs from
- the MC68000 in that: 1) a generic "vector word" has been added to the
- MC68010 stack frame; and 2) the MC68000's "MOVE SR,ea" has been made a
- privileged operation.
-
- Easy software solutions for these two minor differences are: 1) any routines
- which build exception stacks (e.g. those which dispatch a routine via an
- RTE instruction) are modified to account for the four word stack frame (the
- MC68000 uses a three word stack frame); and 2) an exception handler is added
- to provide for privilege violations generated by the execution of the
- "MOVE SR,ea" instructions in the USER state (local Motorola representatives
- can supply a debugged handler to suit the requirements of any OS). Major
- operating systems have been ported from the MC68000 to the MC68010 in less
- than a single day, reflecting the trivial changes required in the super-
- visory level code.
-
- The bottom line is, by upgrading an MC68000 system to an MC68010 system, an
- increase in system performance is obtained which is equal to that which a
- system redesign from 10 MHz to 12.5 MHz would provide, but with signifi-
- cantly less design cost and effort. The "speed-only" upgrade could only
- achieve, at best, a 25% system improvement, and only if the system memory
- access time is significantly improved. The MC68010 upgrade offers from
- 8% to 50% improvement. Note that the speed gained by changing to the
- MC68010 is achieved with NO change in memory speeds, NO board redesign,
- and NO higher speed parts installed in the system as would be required to
- upgrade a system to a 12.5 MHz part.
-
- ---------------------------------------------------------------------------
- SIDE NOTES:
-
- (1) Commodore-Amiga has provided for the four word stack frame in Exec.
-
- (2) the DeciGEL program is the privilege violation exception handler.
-
- ---------------------------------------------------------------------------
- Amiga is a registered trademark of Commodore Business Machines, Inc.
-